iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 11
0

作為數位原生(Digital natives)出生的一代,網路與生活密不可分,人類已經無法割捨這個為生活帶來強大便利的工具。不過,你是否曾經好奇,資料在網路上是如何達到互通而不出錯的呢?

超文本傳輸協定(英語:HyperText Transfer Protocol,縮寫:HTTP)

這一切有賴HTTP--全球資訊網 (WWW) 的資料通訊的基礎,是為了能夠讓資料在這個網際網路流通所訂定的通訊協定,同時它也是TCP/IP 的應用層協定。

最古老的HTTP協議於1991年出現,迄今已發展28年餘。最初設計僅是為了發布和接收html,第一版HTTP/0.9只接受Get請求方法,到現在的9種request method,分別為
GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE、PATCH。

同場加映:HTTP 請求方法說明

了解工作原理

工作原理

客戶端(Client)意即在某個網站查找資料時的你,當你按下查找資料的button後,會發送Request到伺服器端(Server),它會吐回相應的Response及狀態碼。那麼Request和Response中在傳輸什麼東西呢?

After receiving and interpreting a request message, a server responds with an HTTP response message.

  1. 回應狀態碼 Status-Line
    HTTP 狀態碼

  2. 回應標頭 response-header
    附加的重要資訊

  3. 斷行符號 CRLF(carriage return followed by line feed)
    嚴謹的換行標準

    \r\n

  4. 回應內容主體 message-body
    訊息中乘載資料的地方

HTTP Stateless

  1. 無連接
    指的是請求時建連接、請求完釋放連接,以儘快將資源釋放出來服務其他客戶端。

  2. 無狀態
    無狀態的狀態,指的是事務的狀態,協議對於事務處理沒有記憶能力,Server不知道Client端是什麼狀態。

找尋資料發現HTTP Stateless從這兩個面向解釋,我比較好理解。

Cookie 與 Session

疑,不過懶得記密碼的我都會使用Cookie,這跟Stateless有關係嗎?

有的,因為HTTP的無狀態,Cookie的出現無非是懶人福星,它繞過HTTP的無狀態,保存資訊讓我們未來在使用服務時,可以直接向伺服器發送請求,減少重複的行為。

當使用者登入以後,就會在伺服器端產生一筆session紀錄,接著將session id透過cookie儲存在使用者的瀏覽器當中。這樣使用者點選下一個畫面,甚至是關掉瀏覽器再重新打開,只要瀏覽器中的cookie紀錄還在,就會跟request一起在session中尋找相符的使用者資訊,然後與其他資料做串接處理,最終回到使用者的瀏覽器。
引用Cookie 與 Session

不過,偷懶的行為同時也帶來的危險性,Cookie被盜就等於你的瀏覽器行為都被看光光了,是不是很可怕?

那我們今天先搞懂HTTP協議,明天再見啦~~

參考資料:
HTTP/1.1 — 訊息格式 (Message Format)
[探索 5 分鐘] HTTP 發展歷史
白話 Session 與 Cookie:從經營雜貨店開始


上一篇
Day10-Laravel 6.0 Release Notes
下一篇
Day12-Laravel新手基礎訓-Restful Api
系列文
後端PHP+Laravel--新手實戰日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
陳董 Don
iT邦新手 5 級 ‧ 2019-09-27 12:27:13

難道未來將會看到教我們怎麼拿著別人的餅乾來登入的教學?!

charleen iT邦新手 5 級 ‧ 2019-09-28 16:05:41 檢舉

食物與虛擬的結合,未來就靠Don了!

我要留言

立即登入留言